#include "dataread.h"

DATAREAD::DATAREAD()
{

}

void DATAREAD::openFile()
{
    datamap.clear();
    QFile file("./SAAV_480373_20_500.dat");
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
//        char dataline[RED_BUF_MAX_LEN];
//        qint64 res = file.readLine(dataline, RED_BUF_MAX_LEN);
//        qDebug() << "len:" << res << dataline;
        while(!file.atEnd())
        {
            QByteArray line = file.readLine();
            QString str = QString::fromLocal8Bit(line);
            str = str.remove(str.length() - 1, 1);
            QStringList lineSplit = str.split(',');
            lineSplit.pop_back();

            datamap.append(lineSplit);
        }
    }
    file.close();
    datamap.pop_front();
    datamap.pop_front();
    setZ0();
    mathDeltaZ();
}


QStringList DATAREAD::getLogData(int log)
{
    return datamap.at(log);
}

int DATAREAD::getMapSize()
{
    return datamap.size();
}

void DATAREAD::initDeltaZMax(QVector<double> &vec)
{
    foreach(double nb, vec)
    {
        this->delta_z_max_vec.append(nb);
    }
    qDebug() << delta_z_max_vec;
}

void DATAREAD::checkwarn()
{
    qDebug() << delta_z_vec.size() << "delta_z_vec" <<delta_z_vec;
    qDebug() << delta_z_max_vec.size() << "delta_z_max_vec" << delta_z_max_vec;
    for(int i = 0; i < delta_z_max_vec.size(); i++)
    {
        if(delta_z_vec.at(i) > delta_z_max_vec.at(i))
            emit updateWarn(i, true);
        else
            emit updateWarn(i, false);
    }
}

void DATAREAD::setDeltaZMax(int index, double val)
{
    if(index > delta_z_max_vec.size())
        return;

    delta_z_max_vec[index] = val;
}

void DATAREAD::mathDeltaZ()
{
    delta_z_vec.clear();
    QVector<double> lastline_vec;
    QStringList lastLine = datamap.at(datamap.size() - 1);
    lastLine.pop_front();
    lastLine.pop_front();
    lastLine = getZData(lastLine);
    foreach(QString str, lastLine)
    {
        double nb = str.toDouble();
        lastline_vec.append(nb);
    }

    for(int i = 0; i < lastLine.size(); i++)
    {
        double nb = lastline_vec.at(i) - z_zero_vec.at(i);
        delta_z_vec.append(nb);
    }
    checkwarn();
}

void DATAREAD::setZ0()
{
    z_zero_vec.clear();
    QStringList z0_line = datamap.at(0);
    z0_line.pop_front();
    z0_line.pop_front();
    z0_line = getZData(z0_line);
    foreach (QString str, z0_line) {
        double nb = str.toDouble();
        z_zero_vec.append(nb);
    }
}

QStringList DATAREAD::getZData(QStringList list)
{//012 345 678 9 10 11
    QStringList newList;
    for(int i = 0; i < list.size(); i++)
    {
        if(i % 3 == 2)
        {
            newList.append(list.at(i));
        }
    }
    if(newList.size() > 14)
    {
        qDebug() << "remove";
        for(int i = 14; i < newList.size(); i++)
            newList.removeAt(i);
    }
    return newList;
}
//
